<?php

declare(strict_types=1);

namespace Plugin\Gq\VideoMonitoring\Model;

use Hyperf\DbConnection\Model\Model;

/**
 * 摄像头设备管理模型
 */
class GqVideoCamera extends Model
{
    /**
     * 数据表名
     */
    protected ?string $table = 'gq_video_camera';

    /**
     * 可批量赋值的字段
     */
    protected array $fillable = [
        'name',
        'short_name', 
        'device_code',
        'device_serial',
        'manufacturer',
        'ip_address',
        'port',
        'username',
        'password',
        'play_url',
        'location',
        'longitude',
        'latitude',
        'status',
        'type'
    ];

    /**
     * 字段类型转换
     */
    protected array $casts = [
        'id' => 'integer',
        'port' => 'integer',
        'longitude' => 'decimal:7',
        'latitude' => 'decimal:7',
        'status' => 'integer',
        'created_at' => 'datetime',
        'updated_at' => 'datetime',
        'type' => 'integer'
    ];

    /**
     * 状态常量
     */
    public const STATUS_OFFLINE = 0; // 离线
    public const STATUS_ONLINE = 1;  // 在线

    /**
     * 获取状态文本
     */
    public function getStatusTextAttribute(): string
    {
        return match ($this->status) {
            self::STATUS_OFFLINE => '离线',
            self::STATUS_ONLINE => '在线',
            default => '未知'
        };
    }

    /**
     * 获取状态列表
     */
    public static function getStatusOptions(): array
    {
        return [
            self::STATUS_OFFLINE => '离线',
            self::STATUS_ONLINE => '在线',
        ];
    }
} 